The Maintenance Manual for the "ee" Editor Contents 1. Building the Program From the Source Code. 2. A Guide to Learning About This Code 3. Debugging 4. Altering Existing Behavior A. Where to make specific changes 5. Enhancements A. Steps to make specific changes A. Where to make specific changes Index 1. Building the Program From the Source Code. The code was built under the Windows 2000 operating system, with Microsoft's C++ version 6. It may build under operating systems and versions of the compiler that are not much different. The project ( .dsp ) file is included, so not much setup ( compiler options, ... ) should be needed. 2. A Guide to Learning About This Code It's suggested to read some of the other documentation, in this order : A. readme B. history C. business requirements D. user manual E. specifications Then run the program, and look at the help screen ( F1 ). Try editing some files. Then read the remaining documentation in the order : F. design G. coding standard H. test plan I. test design Then finish reading this file. The next suggestion is to look at the classes in "text storage area.h", "list of files.h" and "list of windows.h". 3. Debugging The usual debugging techiques will probably work : stepping through the code in a debugger, or adding diagnostic output, to the screen or a file. There haven't been any difficult problems, such as intermittent behavior, or code that works in debug mode but not in when built in release mode. The positions in the text area, that move automatically when characters are inserted or deleted, have identifiers, e.g., "cursor" or "bookmark", so that when you're stepping throught that code, you can tell which is which. 4. Altering Existing Behavior A. Where to make specific changes Change ( hint ), file(s), function or data appearance of end-of-line marker list of windows.cpp, update_text_in_line cursor for insert and overwrite platform output.cpp, set_insert_cursor, set_overwrite_cursor default file extensions platform file finder.cpp, default_file_extensions expand tabs on loading a file text storage area.cpp, EXPAND_TABS_ON_INPUT, load_file_unconditionally Key assignments platform input.cpp, ( which key does which command ) command_from_keystroke layout of global status line global status bar.cpp, start_file_count, ... layout of window status line list of windows.cpp, m_start_file_spec, ... marker between files in text storage text storage area.cpp, m_end_of_file_character overlap on Page Down list of windows.cpp, setup_page_size remove trailing blanks on save text storage area.cpp, REMOVE_TRAILING_BLANKS screen colors platform output.cpp, ( marked block, status line, .. ) platform_color start in overwrite mode application model.cpp, ( vs insert mode ) m_in_insert_mode initial tab size for expanding text storage area.cpp, existing tabs m_expand_tab_size initial tab size for tab key application model.cpp, m_edit_tab_size For many of these, the specifications and automated tests should be changed, also. 5. Enhancements A. Steps to make specific changes (1). To add a new command a. Add a command name to the list in "command.h" . b. Update the function "one_line_command" in dialog.cpp . c. Add code to associate it with a key combination in "platform input.cpp" . d. Add code for the top-level handling in "controller.cpp" . e. Decide whether it should be handled in the document, view, or elsewhere. For example, scrolling down affects the view, but not the document, so its code would go in the view. Some changes to the document cause an update to the view automatically, so that handler code can just go in the document. f. Put the handler code in the appropriate place: the document, the view, or the application model. B. Where to make specific changes Change ( hint ), file(s), function or data add new commands ( see 5.A.(1) above ) edit files larger than 2E9 characters text storage area.cpp, .h edit files with UNICODE characters throughout allow more bookmarks list of files.cpp, .h, m_book_mark RAM allocation text storage area.cpp, set_up_ram_for_text, expand run on a different execution platform platform *.cpp, .h respond to a mouse event platform input.cpp use a different compiler compiler dependent.h use UNICODE characters in file names platform file finder.cpp, .h, and other places For many of these, the specifications and automated tests should be changed, also. Index Section bookmarks 5B building the program 1 compiler 1, 5B cursor for insert and overwrite 5B default file extensions 4A end of file indicator 4A execution platform 1, 5B expand tabs 4A insert mode 4A key assignments 4A large files 5B learning About The Code 2 mouse event 5B new commands 5A(1) overlap on Page Down 4A RAM allocation 5B screen colors 4A status lines 4A tab size 4A trailing blanks 4A UNICODE 5B